{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=\"red\">注</font>: 使用 tensorboard 可视化需要安装 tensorflow (TensorBoard依赖于tensorflow库，可以任意安装tensorflow的gpu/cpu版本)\n",
    "\n",
    "```shell\n",
    "pip install tensorflow-cpu\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-29T07:26:53.717025100Z",
     "start_time": "2024-04-29T07:26:41.940668700Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sys.version_info(major=3, minor=9, micro=7, releaselevel='final', serial=0)\n",
      "matplotlib 3.8.4\n",
      "numpy 1.26.4\n",
      "pandas 2.2.2\n",
      "sklearn 1.4.2\n",
      "torch 2.2.2+cpu\n",
      "cpu\n"
     ]
    }
   ],
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import pandas as pd\n",
    "import os\n",
    "import sys\n",
    "import time\n",
    "from tqdm.auto import tqdm\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "print(sys.version_info)\n",
    "for module in mpl, np, pd, sklearn, torch:\n",
    "    print(module.__name__, module.__version__)\n",
    "    \n",
    "device = torch.device(\"cuda:0\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
    "print(device)\n",
    "\n",
    "seed = 42\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据准备\n",
    "\n",
    "https://www.kaggle.com/competitions/cifar-10/data\n",
    "\n",
    "```shell\n",
    "$ tree -L 1 cifar-10                                    \n",
    "cifar-10\n",
    "├── sampleSubmission.csv\n",
    "├── test\n",
    "├── train\n",
    "└── trainLabels.csv\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-29T07:26:57.059835700Z",
     "start_time": "2024-04-29T07:26:53.725020800Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(WindowsPath('D:/cifar-10/train/1.png'), 'frog'),\n",
      " (WindowsPath('D:/cifar-10/train/2.png'), 'truck'),\n",
      " (WindowsPath('D:/cifar-10/train/3.png'), 'truck'),\n",
      " (WindowsPath('D:/cifar-10/train/4.png'), 'deer'),\n",
      " (WindowsPath('D:/cifar-10/train/5.png'), 'automobile')]\n",
      "[(WindowsPath('D:/cifar-10/test/1.png'), 'cat'),\n",
      " (WindowsPath('D:/cifar-10/test/2.png'), 'cat'),\n",
      " (WindowsPath('D:/cifar-10/test/3.png'), 'cat'),\n",
      " (WindowsPath('D:/cifar-10/test/4.png'), 'cat'),\n",
      " (WindowsPath('D:/cifar-10/test/5.png'), 'cat')]\n",
      "50000 300000\n"
     ]
    }
   ],
   "source": [
    "from pathlib import Path\n",
    "\n",
    "DATA_DIR = Path(\"D:\\cifar-10\")\n",
    "\n",
    "train_lables_file = DATA_DIR / \"trainLabels.csv\"\n",
    "test_csv_file = DATA_DIR / \"sampleSubmission.csv\"\n",
    "train_folder = DATA_DIR / \"train/\"\n",
    "test_folder = DATA_DIR / \"test\"\n",
    "\n",
    "#所有的类别\n",
    "class_names = [\n",
    "    'airplane',\n",
    "    'automobile',\n",
    "    'bird',\n",
    "    'cat',\n",
    "    'deer',\n",
    "    'dog',\n",
    "    'frog',\n",
    "    'horse',\n",
    "    'ship',\n",
    "    'truck',\n",
    "]\n",
    "\n",
    "def parse_csv_file(filepath, folder):\n",
    "    \"\"\"Parses csv files into (filename(path), label) format\"\"\"\n",
    "    results = []\n",
    "    #读取所有行\n",
    "    with open(filepath, 'r') as f:\n",
    "#         lines = f.readlines()  为什么加[1:]，可以试这个\n",
    "        #第一行不需要，因为第一行是标签\n",
    "        lines = f.readlines()[1:] \n",
    "    for line in lines:#依次去取每一行\n",
    "        image_id, label_str = line.strip('\\n').split(',')\n",
    "        image_full_path = folder / f\"{image_id}.png\"\n",
    "        results.append((image_full_path, label_str)) #得到对应图片的路径和分类\n",
    "    return results\n",
    "\n",
    "#解析对应的文件夹\n",
    "train_labels_info = parse_csv_file(train_lables_file, train_folder)\n",
    "test_csv_info = parse_csv_file(test_csv_file, test_folder)\n",
    "#打印\n",
    "import pprint\n",
    "pprint.pprint(train_labels_info[0:5])\n",
    "pprint.pprint(test_csv_info[0:5])\n",
    "print(len(train_labels_info), len(test_csv_info))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-29T07:26:57.198755900Z",
     "start_time": "2024-04-29T07:26:57.074830700Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                  filepath       class\n",
      "0  D:\\cifar-10\\train\\1.png        frog\n",
      "1  D:\\cifar-10\\train\\2.png       truck\n",
      "2  D:\\cifar-10\\train\\3.png       truck\n",
      "3  D:\\cifar-10\\train\\4.png        deer\n",
      "4  D:\\cifar-10\\train\\5.png  automobile\n",
      "                      filepath       class\n",
      "0  D:\\cifar-10\\train\\45001.png       horse\n",
      "1  D:\\cifar-10\\train\\45002.png  automobile\n",
      "2  D:\\cifar-10\\train\\45003.png        deer\n",
      "3  D:\\cifar-10\\train\\45004.png  automobile\n",
      "4  D:\\cifar-10\\train\\45005.png    airplane\n",
      "                 filepath class\n",
      "0  D:\\cifar-10\\test\\1.png   cat\n",
      "1  D:\\cifar-10\\test\\2.png   cat\n",
      "2  D:\\cifar-10\\test\\3.png   cat\n",
      "3  D:\\cifar-10\\test\\4.png   cat\n",
      "4  D:\\cifar-10\\test\\5.png   cat\n"
     ]
    }
   ],
   "source": [
    "# train_df = pd.DataFrame(train_labels_info)\n",
    "train_df = pd.DataFrame(train_labels_info[0:45000])\n",
    "valid_df = pd.DataFrame(train_labels_info[45000:])\n",
    "test_df = pd.DataFrame(test_csv_info)\n",
    "\n",
    "train_df.columns = ['filepath', 'class']\n",
    "valid_df.columns = ['filepath', 'class']\n",
    "test_df.columns = ['filepath', 'class']\n",
    "\n",
    "print(train_df.head())\n",
    "print(valid_df.head())\n",
    "print(test_df.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-29T07:26:59.518557800Z",
     "start_time": "2024-04-29T07:26:57.211747900Z"
    }
   },
   "outputs": [],
   "source": [
    "from PIL import Image\n",
    "from torch.utils.data import Dataset, DataLoader\n",
    "from torchvision import transforms\n",
    "\n",
    "class Cifar10Dataset(Dataset):\n",
    "    df_map = {\n",
    "        \"train\": train_df,\n",
    "        \"eval\": valid_df,\n",
    "        \"test\": test_df\n",
    "    }\n",
    "    label_to_idx = {label: idx for idx, label in enumerate(class_names)}\n",
    "    idx_to_label = {idx: label for idx, label in enumerate(class_names)}\n",
    "    def __init__(self, mode, transform=None):\n",
    "        self.df = self.df_map.get(mode, None)\n",
    "        if self.df is None:\n",
    "            raise ValueError(\"mode should be one of train, val, test, but got {}\".format(mode))\n",
    "\n",
    "        self.transform = transform\n",
    "        \n",
    "    def __getitem__(self, index):\n",
    "        img_path, label = self.df.iloc[index]\n",
    "        img = Image.open(img_path).convert('RGB')\n",
    "        # # img 转换为 channel first\n",
    "        # img = img.transpose((2, 0, 1))\n",
    "        # transform\n",
    "        img = self.transform(img)\n",
    "        # label 转换为 idx\n",
    "        label = self.label_to_idx[label]\n",
    "        return img, label\n",
    "    \n",
    "    def __len__(self):\n",
    "        return self.df.shape[0]\n",
    "    \n",
    "IMAGE_SIZE = 32\n",
    "mean, std = [0.4914, 0.4822, 0.4465], [0.247, 0.243, 0.261]\n",
    "\n",
    "transforms_train = transforms.Compose([\n",
    "        # resize\n",
    "        transforms.Resize((IMAGE_SIZE, IMAGE_SIZE)),\n",
    "        # random rotation 40\n",
    "        transforms.RandomRotation(40),\n",
    "        # horizaontal flip\n",
    "        transforms.RandomHorizontalFlip(),\n",
    "        transforms.ToTensor(),\n",
    "        transforms.Normalize(mean, std)\n",
    "    ])\n",
    "\n",
    "transforms_eval = transforms.Compose([\n",
    "        # resize\n",
    "        transforms.Resize((IMAGE_SIZE, IMAGE_SIZE)),\n",
    "        transforms.ToTensor(),\n",
    "        transforms.Normalize(mean, std)\n",
    "    ])\n",
    "\n",
    "train_ds = Cifar10Dataset(\"train\", transforms_train)\n",
    "eval_ds = Cifar10Dataset(\"eval\", transforms_eval) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-29T07:26:59.536547700Z",
     "start_time": "2024-04-29T07:26:59.522555600Z"
    }
   },
   "outputs": [],
   "source": [
    "batch_size = 64\n",
    "train_dl = DataLoader(train_ds, batch_size=batch_size, shuffle=True, num_workers=4)   \n",
    "eval_dl = DataLoader(eval_ds, batch_size=batch_size, shuffle=False, num_workers=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-29T07:26:59.562532300Z",
     "start_time": "2024-04-29T07:26:59.538546800Z"
    }
   },
   "outputs": [],
   "source": [
    "# 遍历train_ds得到每张图片，计算每个通道的均值和方差\n",
    "# def cal_mean_std(ds):\n",
    "#     mean = 0.\n",
    "#     std = 0.\n",
    "#     for img, _ in ds:\n",
    "#         mean += img.mean(dim=(1, 2))\n",
    "#         std += img.std(dim=(1, 2))\n",
    "#     mean /= len(ds)\n",
    "#     std /= len(ds)\n",
    "#     return mean, std\n",
    "#\n",
    "# # 经过 normalize 后 均值为0，方差为1\n",
    "# print(cal_mean_std(train_ds))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 定义模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-29T07:25:57.070934100Z",
     "start_time": "2024-04-29T07:25:56.635844800Z"
    }
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'nn' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mNameError\u001B[0m                                 Traceback (most recent call last)",
      "Cell \u001B[1;32mIn[1], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m \u001B[38;5;28;01mclass\u001B[39;00m \u001B[38;5;21;01mInceptionBolck\u001B[39;00m(\u001B[43mnn\u001B[49m\u001B[38;5;241m.\u001B[39mModule):\n\u001B[0;32m      2\u001B[0m     \u001B[38;5;66;03m#output_channel_for_each_path: 1*1卷积输出通道数，3*3卷积输出通道数，5*5卷积输出通道数，池化层输出通道数\u001B[39;00m\n\u001B[0;32m      3\u001B[0m     \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21m__init__\u001B[39m(\u001B[38;5;28mself\u001B[39m, input_channels: \u001B[38;5;28mint\u001B[39m, output_channel_for_each_path: \u001B[38;5;28mlist\u001B[39m[\u001B[38;5;28mint\u001B[39m]):\n\u001B[0;32m      4\u001B[0m         \u001B[38;5;28msuper\u001B[39m(InceptionBolck, \u001B[38;5;28mself\u001B[39m)\u001B[38;5;241m.\u001B[39m\u001B[38;5;21m__init__\u001B[39m()\n",
      "\u001B[1;31mNameError\u001B[0m: name 'nn' is not defined"
     ]
    }
   ],
   "source": [
    "class InceptionBolck(nn.Module):\n",
    "    #output_channel_for_each_path: 1*1卷积输出通道数，3*3卷积输出通道数，5*5卷积输出通道数，池化层输出通道数\n",
    "    def __init__(self, input_channels: int, output_channel_for_each_path: list[int]):\n",
    "        super(InceptionBolck, self).__init__()\n",
    "        self.conv1_1 = nn.Conv2d(\n",
    "            in_channels=input_channels, \n",
    "            out_channels=output_channel_for_each_path[0],\n",
    "            kernel_size=1, \n",
    "            padding=\"same\"\n",
    "            )\n",
    "        \n",
    "        self.conv3_3 = nn.Conv2d(\n",
    "            in_channels=input_channels, \n",
    "            out_channels=output_channel_for_each_path[1], \n",
    "            kernel_size=3, \n",
    "            padding=\"same\"\n",
    "            )\n",
    "        self.conv5_5 = nn.Conv2d(\n",
    "            in_channels=input_channels, \n",
    "            out_channels=output_channel_for_each_path[2], \n",
    "            kernel_size=5, \n",
    "            padding=\"same\"\n",
    "            ) # 5*5卷积核，要same，上下左右各补两圈0\n",
    "        self.max_pooling = nn.MaxPool2d(\n",
    "            kernel_size=2, \n",
    "            stride=2, \n",
    "            )\n",
    "        \n",
    "    def forward(self, x):\n",
    "        conv1_1 = F.relu(self.conv1_1(x))\n",
    "        conv3_3 = F.relu(self.conv3_3(x))\n",
    "        conv5_5 = F.relu(self.conv5_5(x))\n",
    "        max_pooling = self.max_pooling(x) # 最大池化，图像尺寸缩小一半\n",
    "        \n",
    "        max_pooling_shape = max_pooling.shape[1:] #最后3个维度，即通道、高、宽\n",
    "        input_shape = x.shape[1:] # 输入的通道、高、宽\n",
    "        width_padding = (input_shape[-2] - max_pooling_shape[-2]) // 2 # // 输入尺寸，减去池化尺寸，再除以2\n",
    "        height_padding = (input_shape[-1] - max_pooling_shape[-1]) // 2\n",
    "        padded_pooling = F.pad(\n",
    "            max_pooling, \n",
    "            [width_padding, width_padding, height_padding, height_padding]\n",
    "            ) # [left, right, top, bottom]，在每个维度上填充的长度，默认填充最后两个维度，即高和宽，填充0\n",
    "        concat_output = torch.cat(\n",
    "            [conv1_1, conv3_3, conv5_5, padded_pooling], \n",
    "            dim=1\n",
    "            ) # 在通道维度上拼接\n",
    "        return concat_output\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             model.0.weight             paramerters num: 864\n",
      "              model.0.bias              paramerters num: 32\n",
      "         model.3.conv1_1.weight         paramerters num: 512\n",
      "          model.3.conv1_1.bias          paramerters num: 16\n",
      "         model.3.conv3_3.weight         paramerters num: 4608\n",
      "          model.3.conv3_3.bias          paramerters num: 16\n",
      "         model.3.conv5_5.weight         paramerters num: 12800\n",
      "          model.3.conv5_5.bias          paramerters num: 16\n",
      "         model.4.conv1_1.weight         paramerters num: 1280\n",
      "          model.4.conv1_1.bias          paramerters num: 16\n",
      "         model.4.conv3_3.weight         paramerters num: 11520\n",
      "          model.4.conv3_3.bias          paramerters num: 16\n",
      "         model.4.conv5_5.weight         paramerters num: 32000\n",
      "          model.4.conv5_5.bias          paramerters num: 16\n",
      "         model.6.conv1_1.weight         paramerters num: 2048\n",
      "          model.6.conv1_1.bias          paramerters num: 16\n",
      "         model.6.conv3_3.weight         paramerters num: 18432\n",
      "          model.6.conv3_3.bias          paramerters num: 16\n",
      "         model.6.conv5_5.weight         paramerters num: 51200\n",
      "          model.6.conv5_5.bias          paramerters num: 16\n",
      "         model.7.conv1_1.weight         paramerters num: 2816\n",
      "          model.7.conv1_1.bias          paramerters num: 16\n",
      "         model.7.conv3_3.weight         paramerters num: 25344\n",
      "          model.7.conv3_3.bias          paramerters num: 16\n",
      "         model.7.conv5_5.weight         paramerters num: 70400\n",
      "          model.7.conv5_5.bias          paramerters num: 16\n",
      "            model.10.weight             paramerters num: 35840\n",
      "             model.10.bias              paramerters num: 10\n"
     ]
    }
   ],
   "source": [
    "class InceptionNet(nn.Module):\n",
    "    def __init__(self, num_classes=10):\n",
    "        super(InceptionNet, self).__init__()\n",
    "        self.model = nn.Sequential(\n",
    "            nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3, stride=1, padding=\"same\"),\n",
    "            nn.ReLU(),\n",
    "            nn.MaxPool2d(kernel_size=2, stride=2),#16*16\n",
    "            InceptionBolck(input_channels=32, output_channel_for_each_path=[16, 16, 16]),#80*16*16\n",
    "            InceptionBolck(input_channels=80, output_channel_for_each_path=[16, 16, 16]),#128*16*16\n",
    "            nn.MaxPool2d(kernel_size=2, stride=2),#8*8\n",
    "            InceptionBolck(input_channels=128, output_channel_for_each_path=[16, 16, 16]),#176*8*8\n",
    "            InceptionBolck(input_channels=176, output_channel_for_each_path=[16, 16, 16]),#224*8*8\n",
    "            nn.MaxPool2d(kernel_size=2, stride=2),#4*4\n",
    "            nn.Flatten(),\n",
    "            nn.Linear(3584, num_classes)\n",
    "        )\n",
    "        self.init_weights()\n",
    "        \n",
    "    def init_weights(self):\n",
    "        \"\"\"使用 xavier 均匀分布来初始化全连接层、卷积层的权重 W\"\"\"\n",
    "        for m in self.modules():\n",
    "            if isinstance(m, (nn.Linear, nn.Conv2d)):\n",
    "                nn.init.xavier_uniform_(m.weight)\n",
    "                nn.init.zeros_(m.bias)\n",
    "                \n",
    "    def forward(self, x):\n",
    "        return self.model(x)\n",
    "\n",
    "            \n",
    "for key, value in InceptionNet(len(class_names)).named_parameters():\n",
    "    print(f\"{key:^40}paramerters num: {np.prod(value.shape)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "data": {
      "text/plain": "3584"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "224*4*4"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-29T07:32:25.732902700Z",
     "start_time": "2024-04-29T07:32:25.719926400Z"
    }
   }
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练\n",
    "\n",
    "pytorch的训练需要自行实现，包括\n",
    "1. 定义损失函数\n",
    "2. 定义优化器\n",
    "3. 定义训练步\n",
    "4. 训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "@torch.no_grad()\n",
    "def evaluating(model, dataloader, loss_fct):\n",
    "    loss_list = []\n",
    "    pred_list = []\n",
    "    label_list = []\n",
    "    for datas, labels in dataloader:\n",
    "        datas = datas.to(device)\n",
    "        labels = labels.to(device)\n",
    "        # 前向计算\n",
    "        logits = model(datas)\n",
    "        loss = loss_fct(logits, labels)         # 验证集损失\n",
    "        loss_list.append(loss.item())\n",
    "        \n",
    "        preds = logits.argmax(axis=-1)    # 验证集预测\n",
    "        pred_list.extend(preds.cpu().numpy().tolist())\n",
    "        label_list.extend(labels.cpu().numpy().tolist())\n",
    "        \n",
    "    acc = accuracy_score(label_list, pred_list)\n",
    "    return np.mean(loss_list), acc\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### TensorBoard 可视化\n",
    "\n",
    "\n",
    "训练过程中可以使用如下命令启动tensorboard服务。\n",
    "\n",
    "```shell\n",
    "tensorboard \\\n",
    "    --logdir=runs \\     # log 存放路径\n",
    "    --host 0.0.0.0 \\    # ip\n",
    "    --port 8848         # 端口\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch.utils.tensorboard import SummaryWriter\n",
    "\n",
    "\n",
    "class TensorBoardCallback:\n",
    "    def __init__(self, log_dir, flush_secs=10):\n",
    "        \"\"\"\n",
    "        Args:\n",
    "            log_dir (str): dir to write log.\n",
    "            flush_secs (int, optional): write to dsk each flush_secs seconds. Defaults to 10.\n",
    "        \"\"\"\n",
    "        self.writer = SummaryWriter(log_dir=log_dir, flush_secs=flush_secs)\n",
    "\n",
    "    def draw_model(self, model, input_shape):\n",
    "        self.writer.add_graph(model, input_to_model=torch.randn(input_shape))\n",
    "        \n",
    "    def add_loss_scalars(self, step, loss, val_loss):\n",
    "        self.writer.add_scalars(\n",
    "            main_tag=\"training/loss\", \n",
    "            tag_scalar_dict={\"loss\": loss, \"val_loss\": val_loss},\n",
    "            global_step=step,\n",
    "            )\n",
    "        \n",
    "    def add_acc_scalars(self, step, acc, val_acc):\n",
    "        self.writer.add_scalars(\n",
    "            main_tag=\"training/accuracy\",\n",
    "            tag_scalar_dict={\"accuracy\": acc, \"val_accuracy\": val_acc},\n",
    "            global_step=step,\n",
    "        )\n",
    "        \n",
    "    def add_lr_scalars(self, step, learning_rate):\n",
    "        self.writer.add_scalars(\n",
    "            main_tag=\"training/learning_rate\",\n",
    "            tag_scalar_dict={\"learning_rate\": learning_rate},\n",
    "            global_step=step,\n",
    "            \n",
    "        )\n",
    "    \n",
    "    def __call__(self, step, **kwargs):\n",
    "        # add loss\n",
    "        loss = kwargs.pop(\"loss\", None)\n",
    "        val_loss = kwargs.pop(\"val_loss\", None)\n",
    "        if loss is not None and val_loss is not None:\n",
    "            self.add_loss_scalars(step, loss, val_loss)\n",
    "        # add acc\n",
    "        acc = kwargs.pop(\"acc\", None)\n",
    "        val_acc = kwargs.pop(\"val_acc\", None)\n",
    "        if acc is not None and val_acc is not None:\n",
    "            self.add_acc_scalars(step, acc, val_acc)\n",
    "        # add lr\n",
    "        learning_rate = kwargs.pop(\"lr\", None)\n",
    "        if learning_rate is not None:\n",
    "            self.add_lr_scalars(step, learning_rate)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Save Best\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "class SaveCheckpointsCallback:\n",
    "    def __init__(self, save_dir, save_step=5000, save_best_only=True):\n",
    "        \"\"\"\n",
    "        Save checkpoints each save_epoch epoch. \n",
    "        We save checkpoint by epoch in this implementation.\n",
    "        Usually, training scripts with pytorch evaluating model and save checkpoint by step.\n",
    "\n",
    "        Args:\n",
    "            save_dir (str): dir to save checkpoint\n",
    "            save_epoch (int, optional): the frequency to save checkpoint. Defaults to 1.\n",
    "            save_best_only (bool, optional): If True, only save the best model or save each model at every epoch.\n",
    "        \"\"\"\n",
    "        self.save_dir = save_dir\n",
    "        self.save_step = save_step\n",
    "        self.save_best_only = save_best_only\n",
    "        self.best_metrics = -1\n",
    "        \n",
    "        # mkdir\n",
    "        if not os.path.exists(self.save_dir):\n",
    "            os.mkdir(self.save_dir)\n",
    "        \n",
    "    def __call__(self, step, state_dict, metric=None):\n",
    "        if step % self.save_step > 0:\n",
    "            return\n",
    "        \n",
    "        if self.save_best_only:\n",
    "            assert metric is not None\n",
    "            if metric >= self.best_metrics:\n",
    "                # save checkpoints\n",
    "                torch.save(state_dict, os.path.join(self.save_dir, \"best.ckpt\"))\n",
    "                # update best metrics\n",
    "                self.best_metrics = metric\n",
    "        else:\n",
    "            torch.save(state_dict, os.path.join(self.save_dir, f\"{step}.ckpt\"))\n",
    "\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Early Stop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "class EarlyStopCallback:\n",
    "    def __init__(self, patience=5, min_delta=0.01):\n",
    "        \"\"\"\n",
    "\n",
    "        Args:\n",
    "            patience (int, optional): Number of epochs with no improvement after which training will be stopped.. Defaults to 5.\n",
    "            min_delta (float, optional): Minimum change in the monitored quantity to qualify as an improvement, i.e. an absolute \n",
    "                change of less than min_delta, will count as no improvement. Defaults to 0.01.\n",
    "        \"\"\"\n",
    "        self.patience = patience\n",
    "        self.min_delta = min_delta\n",
    "        self.best_metric = -1\n",
    "        self.counter = 0\n",
    "        \n",
    "    def __call__(self, metric):\n",
    "        if metric >= self.best_metric + self.min_delta:\n",
    "            # update best metric\n",
    "            self.best_metric = metric\n",
    "            # reset counter \n",
    "            self.counter = 0\n",
    "        else: \n",
    "            self.counter += 1\n",
    "            \n",
    "    @property\n",
    "    def early_stop(self):\n",
    "        return self.counter >= self.patience\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2023-06-01 00:14:20.141421: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 AVX_VNNI FMA\n",
      "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b22cae100dbf4ce692e683898315ec38",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/14080 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 训练\n",
    "def training(\n",
    "    model, \n",
    "    train_loader, \n",
    "    val_loader, \n",
    "    epoch, \n",
    "    loss_fct, \n",
    "    optimizer, \n",
    "    tensorboard_callback=None,\n",
    "    save_ckpt_callback=None,\n",
    "    early_stop_callback=None,\n",
    "    eval_step=500,\n",
    "    ):\n",
    "    record_dict = {\n",
    "        \"train\": [],\n",
    "        \"val\": []\n",
    "    }\n",
    "    \n",
    "    global_step = 0\n",
    "    model.train()\n",
    "    with tqdm(total=epoch * len(train_loader)) as pbar:\n",
    "        for epoch_id in range(epoch):\n",
    "            # training\n",
    "            for datas, labels in train_loader:\n",
    "                datas = datas.to(device)\n",
    "                labels = labels.to(device)\n",
    "                # 梯度清空\n",
    "                optimizer.zero_grad()\n",
    "                # 模型前向计算\n",
    "                logits = model(datas)\n",
    "                # 计算损失\n",
    "                loss = loss_fct(logits, labels)\n",
    "                # 梯度回传\n",
    "                loss.backward()\n",
    "                # 调整优化器，包括学习率的变动等\n",
    "                optimizer.step()\n",
    "                preds = logits.argmax(axis=-1)\n",
    "            \n",
    "                acc = accuracy_score(labels.cpu().numpy(), preds.cpu().numpy())    \n",
    "                loss = loss.cpu().item()\n",
    "                # record\n",
    "                \n",
    "                record_dict[\"train\"].append({\n",
    "                    \"loss\": loss, \"acc\": acc, \"step\": global_step\n",
    "                })\n",
    "                \n",
    "                # evaluating\n",
    "                if global_step % eval_step == 0:\n",
    "                    model.eval()\n",
    "                    val_loss, val_acc = evaluating(model, val_loader, loss_fct)\n",
    "                    record_dict[\"val\"].append({\n",
    "                        \"loss\": val_loss, \"acc\": val_acc, \"step\": global_step\n",
    "                    })\n",
    "                    model.train()\n",
    "                    \n",
    "                    # 1. 使用 tensorboard 可视化\n",
    "                    if tensorboard_callback is not None:\n",
    "                        tensorboard_callback(\n",
    "                            global_step, \n",
    "                            loss=loss, val_loss=val_loss,\n",
    "                            acc=acc, val_acc=val_acc,\n",
    "                            lr=optimizer.param_groups[0][\"lr\"],\n",
    "                            )\n",
    "                \n",
    "                    # 2. 保存模型权重 save model checkpoint\n",
    "                    if save_ckpt_callback is not None:\n",
    "                        save_ckpt_callback(global_step, model.state_dict(), metric=val_acc)\n",
    "\n",
    "                    # 3. 早停 Early Stop\n",
    "                    if early_stop_callback is not None:\n",
    "                        early_stop_callback(val_acc)\n",
    "                        if early_stop_callback.early_stop:\n",
    "                            print(f\"Early stop at epoch {epoch_id} / global_step {global_step}\")\n",
    "                            return record_dict\n",
    "                    \n",
    "                # udate step\n",
    "                global_step += 1\n",
    "                pbar.update(1)\n",
    "                pbar.set_postfix({\"epoch\": epoch_id})\n",
    "        \n",
    "    return record_dict\n",
    "        \n",
    "\n",
    "epoch = 20\n",
    "\n",
    "model = InceptionNet(num_classes=10)\n",
    "\n",
    "# 1. 定义损失函数 采用交叉熵损失\n",
    "loss_fct = nn.CrossEntropyLoss()\n",
    "# 2. 定义优化器 采用 Rmsprop\n",
    "# Optimizers specified in the torch.optim package\n",
    "optimizer = torch.optim.RMSprop(model.parameters(), lr=0.001, alpha=0.9, eps=1e-07)\n",
    "\n",
    "# 1. tensorboard 可视化\n",
    "if not os.path.exists(\"runs\"):\n",
    "    os.mkdir(\"runs\")\n",
    "    \n",
    "exp_name = \"inception_net\"\n",
    "tensorboard_callback = TensorBoardCallback(f\"runs/{exp_name}\")\n",
    "tensorboard_callback.draw_model(model, [1, 3, IMAGE_SIZE, IMAGE_SIZE])\n",
    "# 2. save best\n",
    "if not os.path.exists(\"checkpoints\"):\n",
    "    os.makedirs(\"checkpoints\")\n",
    "save_ckpt_callback = SaveCheckpointsCallback(f\"checkpoints/{exp_name}\", save_step=len(train_dl), save_best_only=True)\n",
    "# 3. early stop\n",
    "early_stop_callback = EarlyStopCallback(patience=5)\n",
    "\n",
    "model = model.to(device)\n",
    "record = training(\n",
    "    model, \n",
    "    train_dl, \n",
    "    eval_dl, \n",
    "    epoch, \n",
    "    loss_fct, \n",
    "    optimizer, \n",
    "    tensorboard_callback=tensorboard_callback,\n",
    "    save_ckpt_callback=save_ckpt_callback,\n",
    "    early_stop_callback=early_stop_callback,\n",
    "    eval_step=len(train_dl)\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yyoqKlBdXR13mwULFuDOO++MWr5kyRJ4/n975x0mRWH+8c9s371eOXoXFJAqiBUjimI3scUo1miUREMs4RdjV4wVYyyJxhJL1Bg1JiKCICqKIiBI7x2uc/1u6/z+mJ3Z2b293rn38zw83O5OeWd372a+877v9/V4mhWvVdFSQCtXr8F+YHWdy6VVbuUkoOrQQT7rgF6lWBYuXNjRITQLibt96Ypxd8WYofvFXVVV1cqRCPVRYQgga+0XK6UEThAEoTVotgC6+eabWbduHUuXLm3NeACYPXt2VNaorKyMvn37cvrpp5OcnNzk7fn9fv6+eREAw44ayfSJfeteuHALbHkAjyXA9OnTm7yv1sLv97Nw4UJOO+007HZ7h8XRVCTu9qUrxt0VY4buG7eegRfaB7MJQhSqKoNQBUEQWolmCaCZM2fyv//9jy+//JI+ffrUu2xOTg55eXlRz+Xl5ZGTk1PnOk6nE6fTWet5u93e7AsP3QQhpCr1byNRKy1QvGXYrVawdKxTeEuOuSORuNuXrhh3V4wZul/cXelYn332WR577DFyc3MZPXo0zzzzDBMnTmxwvbfffpvLLruM8847r97y7PagMtwDVKsErqYEQuEBqZIBEgRBaBFNurpXVZWZM2fywQcfsHjxYgYOHNjgOpMnT2bRokVRzy1cuJDJkyc3LdIW0mQTBDUEvoq2DUoQBEFoFd555x1mzZrFPffcw6pVqxg9ejTTpk0jPz+/3vV27drFbbfdxoknnthOkdZPnT1AleH+H0cS2GrfIBQEQRAaT5ME0M0338wbb7zBW2+9RVJSErm5ueTm5lJdXW0sc+WVVzJ79mzj8S233ML8+fN54okn2LRpE/feey8rVqxg5syZrXcUjaDRg1BtLrCE73iKE5wgCEKX4Mknn+T666/n6quv5qijjuKFF17A4/Hw8ssv17lOMBjk8ssv57777mPQoEHtGG3dRErgYnqADAtsMUAQBEFoKU0qgXv++ecBmDJlStTzr7zyCldddRUAe/bswWIqGzvuuON46623uOuuu/i///s/hg4dyocfflivcUJbYMwBaigDpChaFqiqUIahCoIgdAF8Ph8rV66MuvlmsViYOnUqy5Ytq3O9+++/n+zsbK699lq++uqrevfRFu6k5v+N7Vb7AHDblajXlLI8bEDInUFQHEqbjMTdfnTFmEHi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QRAEQRAEQRAEoTXoFhkgQRAEQRAEQRAEEAEkCIIgCIIgCEI3QgSQIAiCIAiCIAjdBhFAgiAIgiAIgiB0Gw57AfTss88yYMAAXC4XkyZNYvny5e227zlz5nDMMceQlJREdnY2559/Pps3b45apqamhptvvpmMjAwSExP56U9/Sl5eXtQye/bs4ayzzsLj8ZCdnc3tt99OIBCIWmbJkiWMGzcOp9PJkCFDePXVV1vlGB555BEUReHWW2/t9DHv37+fX/ziF2RkZOB2uxk1ahQrVqwwXldVlbvvvpuePXvidruZOnUqW7dujdpGcXExl19+OcnJyaSmpnLttddSUVERtcyPP/7IiSeeiMvlom/fvjz66KPNjjkYDPLHP/6RgQMH4na7GTx4MA888ABmb5LOEPeXX37JOeecQ69evVAUhQ8//DDq9faM8V//+hfDhw/H5XIxatQo5s2b16y4/X4/d955J6NGjSIhIYFevXpx5ZVXcuDAgU4ddyw33ngjiqIwd+7cDo9baDxybmoZcm6ScxPIuak94z7szkvqYczbb7+tOhwO9eWXX1bXr1+vXn/99Wpqaqqal5fXLvufNm2a+sorr6jr1q1TV69erU6fPl3t16+fWlFRYSxz4403qn379lUXLVqkrlixQj322GPV4447zng9EAioI0eOVKdOnar+8MMP6rx589TMzEx19uzZxjI7duxQPR6POmvWLHXDhg3qM888o1qtVnX+/Pktin/58uXqgAED1KOPPlq95ZZbOnXMxcXFav/+/dWrrrpK/e6779QdO3aon376qbpt2zZjmUceeURNSUlRP/zwQ3XNmjXqueeeqw4cOFCtrq42ljnjjDPU0aNHq99++6361VdfqUOGDFEvu+wy4/XS0lK1R48e6uWXX66uW7dO/ec//6m63W71r3/9a7Pifuihh9SMjAz1f//7n7pz5071X//6l5qYmKg+/fTTnSruefPmqX/4wx/U999/XwXUDz74IOr19orx66+/Vq1Wq/roo4+qGzZsUO+66y7Vbrera9eubXLcJSUl6tSpU9V33nlH3bRpk7ps2TJ14sSJ6vjx46O20dniNvP++++ro0ePVnv16qU+9dRTHR630Djk3CTnJjk3tU7ccm5qv7gPt/PSYS2AJk6cqN58883G42AwqPbq1UudM2dOh8STn5+vAuoXX3yhqqr2Jbfb7eq//vUvY5mNGzeqgLps2TJVVbUvnMViUXNzc41lnn/+eTU5OVn1er2qqqrqHXfcoY4YMSJqX5dccok6bdq0ZsdaXl6uDh06VF24cKF68sknGyeZzhrznXfeqZ5wwgl1vh4KhdScnBz1scceM54rKSlRnU6n+s9//lNVVVXdsGGDCqjff/+9scwnn3yiKoqi7t+/X1VVVX3uuefUtLQ04zj0fQ8bNqxZcZ911lnqNddcE/XchRdeqF5++eWdNu7YP3ztGePFF1+snnXWWVHxTJo0Sb3hhhuaHHc8li9frgLq7t27O33c+/btU3v37q2uW7dO7d+/f9SJpjPELdSNnJvk3KTTGf/Gq6qcmzrD33gzne3cdDiclw7bEjifz8fKlSuZOnWq8ZzFYmHq1KksW7asQ2IqLS0FID09HYCVK1fi9/ujYhw+fDj9+vUzYly2bBmjRo2iR48exjLTpk2jrKyM9evXG8uYt6Ev05LjvPnmmznrrLNqbbezxvzRRx8xYcIELrroIrKzsxk7diwvvvii8frOnTvJzc2N2mdKSgqTJk2Kijs1NZUJEyYYy0ydOhWLxcJ3331nLHPSSSfhcDii4t68eTOHDh1qctzHHXccixYtYsuWLQCsWbOGpUuXcuaZZ3bquM20Z4xt8V03U1paiqIopKamduq4Q6EQV1xxBbfffjsjRoyo9XpnjVuQc5Ocm+TcJOemptMVzk1d7bx02AqgwsJCgsFg1B86gB49epCbm9vu8YRCIW699VaOP/54Ro4cCUBubi4Oh8P4QseLMTc3N+4x6K/Vt0xZWRnV1dVNjvXtt99m1apVzJkzp9ZrnTXmHTt28PzzzzN06FA+/fRTfvWrX/Gb3/yG1157LWq/9X0fcnNzyc7OjnrdZrORnp7epGNrCr///e+59NJLGT58OHa7nbFjx3Lrrbdy+eWXd+q4zbRnjHUt0xq/0zU1Ndx5551cdtllJCcnd+q4//SnP2Gz2fjNb34T9/XOGrcg5yY5N8m5Sc5NTaOrnJu62nnJ1qSlhWZz8803s27dOpYuXdrRodTL3r17ueWWW1i4cCEul6ujw2k0oVCICRMm8PDDDwMwduxY1q1bxwsvvMCMGTM6OLq6effdd3nzzTd56623GDFiBKtXr+bWW2+lV69enTruww2/38/FF1+Mqqo8//zzHR1OvaxcuZKnn36aVatWoShKR4cjdHHk3NS2yLlJaAld5dzUFc9Lh20GKDMzE6vVWssBJi8vj5ycnHaNZebMmfzvf//j888/p0+fPsbzOTk5+Hw+SkpK6owxJycn7jHor9W3THJyMm63u0mxrly5kvz8fMaNG4fNZsNms/HFF1/w5z//GZvNRo8ePTpdzAA9e/bkqKOOinruyCOPZM+ePVH7re/7kJOTQ35+ftTrgUCA4uLiJh1bU7j99tuNO22jRo3iiiuu4Le//a1xh7Ozxm2mPWOsa5mWHIN+gtm9ezcLFy407rB11ri/+uor8vPz6devn/E7unv3bn73u98xYMCAThu3oCHnJjk3yblJzk2NoSudm7rieemwFUAOh4Px48ezaNEi47lQKMSiRYuYPHlyu8SgqiozZ87kgw8+YPHixQwcODDq9fHjx2O326Ni3Lx5M3v27DFinDx5MmvXro360ui/CPof1cmTJ0dtQ1+mOcd56qmnsnbtWlavXm38mzBhApdffrnxc2eLGeD444+vZeO6ZcsW+vfvD8DAgQPJycmJ2mdZWRnfffddVNwlJSWsXLnSWGbx4sWEQiEmTZpkLPPll1/i9/uj4h42bBhpaWlNjruqqgqLJfrX0Gq1EgqFOnXcZtozxtb+3ugnmK1bt/LZZ5+RkZER9XpnjPuKK67gxx9/jPod7dWrF7fffjuffvppp41b0JBzk5yb5Nwk56aG6Grnpi55XmqSZUIX4+2331adTqf66quvqhs2bFB/+ctfqqmpqVEOMG3Jr371KzUlJUVdsmSJevDgQeNfVVWVscyNN96o9uvXT128eLG6YsUKdfLkyerkyZON13XbztNPP11dvXq1On/+fDUrKyuubeftt9+ubty4UX322WdbxWpUx+y001ljXr58uWqz2dSHHnpI3bp1q/rmm2+qHo9HfeONN4xlHnnkETU1NVX9z3/+o/7444/qeeedF9cOc+zYsep3332nLl26VB06dGiURWNJSYnao0cP9YorrlDXrVunvv3226rH42m21eiMGTPU3r17G1aj77//vpqZmanecccdnSru8vJy9YcfflB/+OEHFVCffPJJ9YcffjAcadorxq+//lq12Wzq448/rm7cuFG955576rW/rC9un8+nnnvuuWqfPn3U1atXR/2Omh1oOlvc8Yh12+mouIXGIecmOTfJual14pZzU/vFfbidlw5rAaSqqvrMM8+o/fr1Ux0Ohzpx4kT122+/bbd9A3H/vfLKK8Yy1dXV6k033aSmpaWpHo9HveCCC9SDBw9GbWfXrl3qmWeeqbrdbjUzM1P93e9+p/r9/qhlPv/8c3XMmDGqw+FQBw0aFLWPlhJ7kumsMf/3v/9VR44cqTqdTnX48OHq3/72t6jXQ6GQ+sc//lHt0aOH6nQ61VNPPVXdvHlz1DJFRUXqZZddpiYmJqrJycnq1VdfrZaXl0cts2bNGvWEE05QnU6n2rt3b/WRRx5pdsxlZWXqLbfcovbr1091uVzqoEGD1D/84Q9Rf+Q6Q9yff/553O/yjBkz2j3Gd999Vz3iiCNUh8OhjhgxQv3444+bFffOnTvr/B39/PPPO23c8Yh3oumIuIXGI+emliPnJjk3ybmp/eI+3M5LiqqaxvoKgiAIgiAIgiAcxhy2PUCCIAiCIAiCIAixiAASBEEQBEEQBKHbIAJIEARBEARBEIRugwggQRAEQRAEQRC6DSKABEEQBEEQBEHoNogAEgRBEARBEASh2yACSBAEQRAEQRCEboMIIEEQBEEQBEEQug0igAShlbjqqqs4//zzOzoMQRAEQQDkvCQIdSECSBAEQRAEQRCEboMIIEFoIu+99x6jRo3C7XaTkZHB1KlTuf3223nttdf4z3/+g6IoKIrCkiVLANi7dy8XX3wxqamppKenc95557Fr1y5je/oduvvuu4+srCySk5O58cYb8fl8HXOAgiAIQpdCzkuC0DRsHR2AIHQlDh48yGWXXcajjz7KBRdcQHl5OV999RVXXnkle/bsoaysjFdeeQWA9PR0/H4/06ZNY/LkyXz11VfYbDYefPBBzjjjDH788UccDgcAixYtwuVysWTJEnbt2sXVV19NRkYGDz30UEceriAIgtDJkfOSIDQdEUCC0AQOHjxIIBDgwgsvpH///gCMGjUKALfbjdfrJScnx1j+jTfeIBQK8dJLL6EoCgCvvPIKqampLFmyhNNPPx0Ah8PByy+/jMfjYcSIEdx///3cfvvtPPDAA1gskqgVBEEQ4iPnJUFoOvINFoQmMHr0aE499VRGjRrFRRddxIsvvsihQ4fqXH7NmjVs27aNpKQkEhMTSUxMJD09nZqaGrZv3x61XY/HYzyePHkyFRUV7N27t02PRxAEQejayHlJEJqOZIAEoQlYrVYWLlzIN998w4IFC3jmmWf4wx/+wHfffRd3+YqKCsaPH8+bb75Z67WsrKy2DlcQBEE4zJHzkiA0HRFAgtBEFEXh+OOP5/jjj+fuu++mf//+fPDBBzgcDoLBYNSy48aN45133iE7O5vk5OQ6t7lmzRqqq6txu90AfPvttyQmJtK3b982PRZBEASh6yPnJUFoGlICJwhN4LvvvuPhhx9mxYoV7Nmzh/fff5+CggKOPPJIBgwYwI8//sjmzZspLCzE7/dz+eWXk5mZyXnnncdXX33Fzp07WbJkCb/5zW/Yt2+fsV2fz8e1117Lhg0bmDdvHvfccw8zZ86UOmtBEAShXuS8JAhNRzJAgtAEkpOT+fLLL5k7dy5lZWX079+fJ554gjPPPJMJEyawZMkSJkyYQEVFBZ9//jlTpkzhyy+/5M477+TCCy+kvLyc3r17c+qpp0bdeTv11FMZOnQoJ510El6vl8suu4x777234w5UEARB6BLIeUkQmo6iqqra0UEIQnfmqquuoqSkhA8//LCjQxEEQRAEOS8Jhz2SxxQEQRAEQRAEodsgAkgQBEEQBEEQhG6DlMAJgiAIgiAIgtBtkAyQIAiCIAiCIAjdBhFAgiAIgiAIgiB0G0QACYIgCIIgCILQbRABJAiCIAiCIAhCt0EEkCAIgiAIgiAI3QYRQIIgCIIgCIIgdBtEAAmCIAiCIAiC0G0QASQIgiAIgiAIQrdBBJAgCIIgCIIgCN2G/weR6tIC8r+PYQAAAABJRU5ErkJggg==",
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"599.680449pt\" height=\"321.95625pt\" viewBox=\"0 0 599.680449 321.95625\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n",
       " <metadata>\n",
       "  <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n",
       "   <cc:Work>\n",
       "    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n",
       "    <dc:date>2023-06-01T00:16:56.688467</dc:date>\n",
       "    <dc:format>image/svg+xml</dc:format>\n",
       "    <dc:creator>\n",
       "     <cc:Agent>\n",
       "      <dc:title>Matplotlib v3.6.3, https://matplotlib.org/</dc:title>\n",
       "     </cc:Agent>\n",
       "    </dc:creator>\n",
       "   </cc:Work>\n",
       "  </rdf:RDF>\n",
       " </metadata>\n",
       " <defs>\n",
       "  <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n",
       " </defs>\n",
       " <g id=\"figure_1\">\n",
       "  <g id=\"patch_1\">\n",
       "   <path d=\"M -0 321.95625 \n",
       "L 599.680449 321.95625 \n",
       "L 599.680449 0 \n",
       "L -0 0 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "  </g>\n",
       "  <g id=\"axes_1\">\n",
       "   <g id=\"patch_2\">\n",
       "    <path d=\"M 30.103125 284.4 \n",
       "L 283.739489 284.4 \n",
       "L 283.739489 7.2 \n",
       "L 30.103125 7.2 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_1\">\n",
       "    <g id=\"xtick_1\">\n",
       "     <g id=\"line2d_1\">\n",
       "      <path d=\"M 41.632051 284.4 \n",
       "L 41.632051 7.2 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_2\">\n",
       "      <defs>\n",
       "       <path id=\"m5158e2a1ea\" d=\"M 0 0 \n",
       "L 0 3.5 \n",
       "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </defs>\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"41.632051\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_1\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(38.450801 298.998438) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \n",
       "Q 1547 4250 1301 3770 \n",
       "Q 1056 3291 1056 2328 \n",
       "Q 1056 1369 1301 889 \n",
       "Q 1547 409 2034 409 \n",
       "Q 2525 409 2770 889 \n",
       "Q 3016 1369 3016 2328 \n",
       "Q 3016 3291 2770 3770 \n",
       "Q 2525 4250 2034 4250 \n",
       "z\n",
       "M 2034 4750 \n",
       "Q 2819 4750 3233 4129 \n",
       "Q 3647 3509 3647 2328 \n",
       "Q 3647 1150 3233 529 \n",
       "Q 2819 -91 2034 -91 \n",
       "Q 1250 -91 836 529 \n",
       "Q 422 1150 422 2328 \n",
       "Q 422 3509 836 4129 \n",
       "Q 1250 4750 2034 4750 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_2\">\n",
       "     <g id=\"line2d_3\">\n",
       "      <path d=\"M 74.571838 284.4 \n",
       "L 74.571838 7.2 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_4\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"74.571838\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_2\">\n",
       "      <!-- 2000 -->\n",
       "      <g transform=\"translate(61.846838 298.998438) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-32\" d=\"M 1228 531 \n",
       "L 3431 531 \n",
       "L 3431 0 \n",
       "L 469 0 \n",
       "L 469 531 \n",
       "Q 828 903 1448 1529 \n",
       "Q 2069 2156 2228 2338 \n",
       "Q 2531 2678 2651 2914 \n",
       "Q 2772 3150 2772 3378 \n",
       "Q 2772 3750 2511 3984 \n",
       "Q 2250 4219 1831 4219 \n",
       "Q 1534 4219 1204 4116 \n",
       "Q 875 4013 500 3803 \n",
       "L 500 4441 \n",
       "Q 881 4594 1212 4672 \n",
       "Q 1544 4750 1819 4750 \n",
       "Q 2544 4750 2975 4387 \n",
       "Q 3406 4025 3406 3419 \n",
       "Q 3406 3131 3298 2873 \n",
       "Q 3191 2616 2906 2266 \n",
       "Q 2828 2175 2409 1742 \n",
       "Q 1991 1309 1228 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_3\">\n",
       "     <g id=\"line2d_5\">\n",
       "      <path d=\"M 107.511626 284.4 \n",
       "L 107.511626 7.2 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_6\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"107.511626\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_3\">\n",
       "      <!-- 4000 -->\n",
       "      <g transform=\"translate(94.786626 298.998438) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \n",
       "L 825 1625 \n",
       "L 2419 1625 \n",
       "L 2419 4116 \n",
       "z\n",
       "M 2253 4666 \n",
       "L 3047 4666 \n",
       "L 3047 1625 \n",
       "L 3713 1625 \n",
       "L 3713 1100 \n",
       "L 3047 1100 \n",
       "L 3047 0 \n",
       "L 2419 0 \n",
       "L 2419 1100 \n",
       "L 313 1100 \n",
       "L 313 1709 \n",
       "L 2253 4666 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-34\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_4\">\n",
       "     <g id=\"line2d_7\">\n",
       "      <path d=\"M 140.451413 284.4 \n",
       "L 140.451413 7.2 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_8\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"140.451413\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_4\">\n",
       "      <!-- 6000 -->\n",
       "      <g transform=\"translate(127.726413 298.998438) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-36\" d=\"M 2113 2584 \n",
       "Q 1688 2584 1439 2293 \n",
       "Q 1191 2003 1191 1497 \n",
       "Q 1191 994 1439 701 \n",
       "Q 1688 409 2113 409 \n",
       "Q 2538 409 2786 701 \n",
       "Q 3034 994 3034 1497 \n",
       "Q 3034 2003 2786 2293 \n",
       "Q 2538 2584 2113 2584 \n",
       "z\n",
       "M 3366 4563 \n",
       "L 3366 3988 \n",
       "Q 3128 4100 2886 4159 \n",
       "Q 2644 4219 2406 4219 \n",
       "Q 1781 4219 1451 3797 \n",
       "Q 1122 3375 1075 2522 \n",
       "Q 1259 2794 1537 2939 \n",
       "Q 1816 3084 2150 3084 \n",
       "Q 2853 3084 3261 2657 \n",
       "Q 3669 2231 3669 1497 \n",
       "Q 3669 778 3244 343 \n",
       "Q 2819 -91 2113 -91 \n",
       "Q 1303 -91 875 529 \n",
       "Q 447 1150 447 2328 \n",
       "Q 447 3434 972 4092 \n",
       "Q 1497 4750 2381 4750 \n",
       "Q 2619 4750 2861 4703 \n",
       "Q 3103 4656 3366 4563 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-36\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_5\">\n",
       "     <g id=\"line2d_9\">\n",
       "      <path d=\"M 173.391201 284.4 \n",
       "L 173.391201 7.2 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_10\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"173.391201\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_5\">\n",
       "      <!-- 8000 -->\n",
       "      <g transform=\"translate(160.666201 298.998438) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-38\" d=\"M 2034 2216 \n",
       "Q 1584 2216 1326 1975 \n",
       "Q 1069 1734 1069 1313 \n",
       "Q 1069 891 1326 650 \n",
       "Q 1584 409 2034 409 \n",
       "Q 2484 409 2743 651 \n",
       "Q 3003 894 3003 1313 \n",
       "Q 3003 1734 2745 1975 \n",
       "Q 2488 2216 2034 2216 \n",
       "z\n",
       "M 1403 2484 \n",
       "Q 997 2584 770 2862 \n",
       "Q 544 3141 544 3541 \n",
       "Q 544 4100 942 4425 \n",
       "Q 1341 4750 2034 4750 \n",
       "Q 2731 4750 3128 4425 \n",
       "Q 3525 4100 3525 3541 \n",
       "Q 3525 3141 3298 2862 \n",
       "Q 3072 2584 2669 2484 \n",
       "Q 3125 2378 3379 2068 \n",
       "Q 3634 1759 3634 1313 \n",
       "Q 3634 634 3220 271 \n",
       "Q 2806 -91 2034 -91 \n",
       "Q 1263 -91 848 271 \n",
       "Q 434 634 434 1313 \n",
       "Q 434 1759 690 2068 \n",
       "Q 947 2378 1403 2484 \n",
       "z\n",
       "M 1172 3481 \n",
       "Q 1172 3119 1398 2916 \n",
       "Q 1625 2713 2034 2713 \n",
       "Q 2441 2713 2670 2916 \n",
       "Q 2900 3119 2900 3481 \n",
       "Q 2900 3844 2670 4047 \n",
       "Q 2441 4250 2034 4250 \n",
       "Q 1625 4250 1398 4047 \n",
       "Q 1172 3844 1172 3481 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-38\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_6\">\n",
       "     <g id=\"line2d_11\">\n",
       "      <path d=\"M 206.330988 284.4 \n",
       "L 206.330988 7.2 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_12\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"206.330988\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_6\">\n",
       "      <!-- 10000 -->\n",
       "      <g transform=\"translate(190.424738 298.998438) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-31\" d=\"M 794 531 \n",
       "L 1825 531 \n",
       "L 1825 4091 \n",
       "L 703 3866 \n",
       "L 703 4441 \n",
       "L 1819 4666 \n",
       "L 2450 4666 \n",
       "L 2450 531 \n",
       "L 3481 531 \n",
       "L 3481 0 \n",
       "L 794 0 \n",
       "L 794 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_7\">\n",
       "     <g id=\"line2d_13\">\n",
       "      <path d=\"M 239.270776 284.4 \n",
       "L 239.270776 7.2 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_14\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"239.270776\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_7\">\n",
       "      <!-- 12000 -->\n",
       "      <g transform=\"translate(223.364526 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-32\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_8\">\n",
       "     <g id=\"line2d_15\">\n",
       "      <path d=\"M 272.210563 284.4 \n",
       "L 272.210563 7.2 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_16\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"272.210563\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_8\">\n",
       "      <!-- 14000 -->\n",
       "      <g transform=\"translate(256.304313 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-34\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"text_9\">\n",
       "     <!-- step -->\n",
       "     <g transform=\"translate(146.105682 312.676562) scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-73\" d=\"M 2834 3397 \n",
       "L 2834 2853 \n",
       "Q 2591 2978 2328 3040 \n",
       "Q 2066 3103 1784 3103 \n",
       "Q 1356 3103 1142 2972 \n",
       "Q 928 2841 928 2578 \n",
       "Q 928 2378 1081 2264 \n",
       "Q 1234 2150 1697 2047 \n",
       "L 1894 2003 \n",
       "Q 2506 1872 2764 1633 \n",
       "Q 3022 1394 3022 966 \n",
       "Q 3022 478 2636 193 \n",
       "Q 2250 -91 1575 -91 \n",
       "Q 1294 -91 989 -36 \n",
       "Q 684 19 347 128 \n",
       "L 347 722 \n",
       "Q 666 556 975 473 \n",
       "Q 1284 391 1588 391 \n",
       "Q 1994 391 2212 530 \n",
       "Q 2431 669 2431 922 \n",
       "Q 2431 1156 2273 1281 \n",
       "Q 2116 1406 1581 1522 \n",
       "L 1381 1569 \n",
       "Q 847 1681 609 1914 \n",
       "Q 372 2147 372 2553 \n",
       "Q 372 3047 722 3315 \n",
       "Q 1072 3584 1716 3584 \n",
       "Q 2034 3584 2315 3537 \n",
       "Q 2597 3491 2834 3397 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \n",
       "L 1172 3500 \n",
       "L 2356 3500 \n",
       "L 2356 3053 \n",
       "L 1172 3053 \n",
       "L 1172 1153 \n",
       "Q 1172 725 1289 603 \n",
       "Q 1406 481 1766 481 \n",
       "L 2356 481 \n",
       "L 2356 0 \n",
       "L 1766 0 \n",
       "Q 1100 0 847 248 \n",
       "Q 594 497 594 1153 \n",
       "L 594 3053 \n",
       "L 172 3053 \n",
       "L 172 3500 \n",
       "L 594 3500 \n",
       "L 594 4494 \n",
       "L 1172 4494 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \n",
       "L 3597 1613 \n",
       "L 953 1613 \n",
       "Q 991 1019 1311 708 \n",
       "Q 1631 397 2203 397 \n",
       "Q 2534 397 2845 478 \n",
       "Q 3156 559 3463 722 \n",
       "L 3463 178 \n",
       "Q 3153 47 2828 -22 \n",
       "Q 2503 -91 2169 -91 \n",
       "Q 1331 -91 842 396 \n",
       "Q 353 884 353 1716 \n",
       "Q 353 2575 817 3079 \n",
       "Q 1281 3584 2069 3584 \n",
       "Q 2775 3584 3186 3129 \n",
       "Q 3597 2675 3597 1894 \n",
       "z\n",
       "M 3022 2063 \n",
       "Q 3016 2534 2758 2815 \n",
       "Q 2500 3097 2075 3097 \n",
       "Q 1594 3097 1305 2825 \n",
       "Q 1016 2553 972 2059 \n",
       "L 3022 2063 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-70\" d=\"M 1159 525 \n",
       "L 1159 -1331 \n",
       "L 581 -1331 \n",
       "L 581 3500 \n",
       "L 1159 3500 \n",
       "L 1159 2969 \n",
       "Q 1341 3281 1617 3432 \n",
       "Q 1894 3584 2278 3584 \n",
       "Q 2916 3584 3314 3078 \n",
       "Q 3713 2572 3713 1747 \n",
       "Q 3713 922 3314 415 \n",
       "Q 2916 -91 2278 -91 \n",
       "Q 1894 -91 1617 61 \n",
       "Q 1341 213 1159 525 \n",
       "z\n",
       "M 3116 1747 \n",
       "Q 3116 2381 2855 2742 \n",
       "Q 2594 3103 2138 3103 \n",
       "Q 1681 3103 1420 2742 \n",
       "Q 1159 2381 1159 1747 \n",
       "Q 1159 1113 1420 752 \n",
       "Q 1681 391 2138 391 \n",
       "Q 2594 391 2855 752 \n",
       "Q 3116 1113 3116 1747 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-73\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-74\" x=\"52.099609\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-65\" x=\"91.308594\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-70\" x=\"152.832031\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_2\">\n",
       "    <g id=\"ytick_1\">\n",
       "     <g id=\"line2d_17\">\n",
       "      <path d=\"M 30.103125 281.250576 \n",
       "L 283.739489 281.250576 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_18\">\n",
       "      <defs>\n",
       "       <path id=\"mb921f1c10e\" d=\"M 0 0 \n",
       "L -3.5 0 \n",
       "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </defs>\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"30.103125\" y=\"281.250576\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_10\">\n",
       "      <!-- 0.5 -->\n",
       "      <g transform=\"translate(7.2 285.049795) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-2e\" d=\"M 684 794 \n",
       "L 1344 794 \n",
       "L 1344 0 \n",
       "L 684 0 \n",
       "L 684 794 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "        <path id=\"DejaVuSans-35\" d=\"M 691 4666 \n",
       "L 3169 4666 \n",
       "L 3169 4134 \n",
       "L 1269 4134 \n",
       "L 1269 2991 \n",
       "Q 1406 3038 1543 3061 \n",
       "Q 1681 3084 1819 3084 \n",
       "Q 2600 3084 3056 2656 \n",
       "Q 3513 2228 3513 1497 \n",
       "Q 3513 744 3044 326 \n",
       "Q 2575 -91 1722 -91 \n",
       "Q 1428 -91 1123 -41 \n",
       "Q 819 9 494 109 \n",
       "L 494 744 \n",
       "Q 775 591 1075 516 \n",
       "Q 1375 441 1709 441 \n",
       "Q 2250 441 2565 725 \n",
       "Q 2881 1009 2881 1497 \n",
       "Q 2881 1984 2565 2268 \n",
       "Q 2250 2553 1709 2553 \n",
       "Q 1456 2553 1204 2497 \n",
       "Q 953 2441 691 2322 \n",
       "L 691 4666 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_2\">\n",
       "     <g id=\"line2d_19\">\n",
       "      <path d=\"M 30.103125 241.0541 \n",
       "L 283.739489 241.0541 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_20\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"30.103125\" y=\"241.0541\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_11\">\n",
       "      <!-- 1.0 -->\n",
       "      <g transform=\"translate(7.2 244.853319) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_3\">\n",
       "     <g id=\"line2d_21\">\n",
       "      <path d=\"M 30.103125 200.857625 \n",
       "L 283.739489 200.857625 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_22\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"30.103125\" y=\"200.857625\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_12\">\n",
       "      <!-- 1.5 -->\n",
       "      <g transform=\"translate(7.2 204.656843) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_4\">\n",
       "     <g id=\"line2d_23\">\n",
       "      <path d=\"M 30.103125 160.661149 \n",
       "L 283.739489 160.661149 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_24\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"30.103125\" y=\"160.661149\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_13\">\n",
       "      <!-- 2.0 -->\n",
       "      <g transform=\"translate(7.2 164.460368) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_5\">\n",
       "     <g id=\"line2d_25\">\n",
       "      <path d=\"M 30.103125 120.464673 \n",
       "L 283.739489 120.464673 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_26\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"30.103125\" y=\"120.464673\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_14\">\n",
       "      <!-- 2.5 -->\n",
       "      <g transform=\"translate(7.2 124.263892) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_6\">\n",
       "     <g id=\"line2d_27\">\n",
       "      <path d=\"M 30.103125 80.268197 \n",
       "L 283.739489 80.268197 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_28\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"30.103125\" y=\"80.268197\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_15\">\n",
       "      <!-- 3.0 -->\n",
       "      <g transform=\"translate(7.2 84.067416) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-33\" d=\"M 2597 2516 \n",
       "Q 3050 2419 3304 2112 \n",
       "Q 3559 1806 3559 1356 \n",
       "Q 3559 666 3084 287 \n",
       "Q 2609 -91 1734 -91 \n",
       "Q 1441 -91 1130 -33 \n",
       "Q 819 25 488 141 \n",
       "L 488 750 \n",
       "Q 750 597 1062 519 \n",
       "Q 1375 441 1716 441 \n",
       "Q 2309 441 2620 675 \n",
       "Q 2931 909 2931 1356 \n",
       "Q 2931 1769 2642 2001 \n",
       "Q 2353 2234 1838 2234 \n",
       "L 1294 2234 \n",
       "L 1294 2753 \n",
       "L 1863 2753 \n",
       "Q 2328 2753 2575 2939 \n",
       "Q 2822 3125 2822 3475 \n",
       "Q 2822 3834 2567 4026 \n",
       "Q 2313 4219 1838 4219 \n",
       "Q 1578 4219 1281 4162 \n",
       "Q 984 4106 628 3988 \n",
       "L 628 4550 \n",
       "Q 988 4650 1302 4700 \n",
       "Q 1616 4750 1894 4750 \n",
       "Q 2613 4750 3031 4423 \n",
       "Q 3450 4097 3450 3541 \n",
       "Q 3450 3153 3228 2886 \n",
       "Q 3006 2619 2597 2516 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-33\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_7\">\n",
       "     <g id=\"line2d_29\">\n",
       "      <path d=\"M 30.103125 40.071722 \n",
       "L 283.739489 40.071722 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_30\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"30.103125\" y=\"40.071722\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_16\">\n",
       "      <!-- 3.5 -->\n",
       "      <g transform=\"translate(7.2 43.87094) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-33\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"line2d_31\">\n",
       "    <path d=\"M 41.632051 114.697079 \n",
       "L 43.27904 180.722317 \n",
       "L 44.926029 190.764488 \n",
       "L 46.573019 195.783547 \n",
       "L 48.220008 189.066545 \n",
       "L 49.866997 210.560383 \n",
       "L 51.513987 184.81196 \n",
       "L 53.160976 211.854186 \n",
       "L 54.807966 202.313755 \n",
       "L 56.454955 227.682831 \n",
       "L 58.101944 242.760856 \n",
       "L 59.748934 208.313444 \n",
       "L 61.395923 235.678274 \n",
       "L 63.042912 215.540043 \n",
       "L 64.689902 210.520276 \n",
       "L 66.336891 231.818513 \n",
       "L 67.983881 217.698449 \n",
       "L 69.63087 218.114626 \n",
       "L 71.277859 252.382503 \n",
       "L 72.924849 233.359218 \n",
       "L 74.571838 233.058821 \n",
       "L 76.218827 220.570602 \n",
       "L 77.865817 247.738973 \n",
       "L 79.512806 234.710638 \n",
       "L 81.159796 205.001088 \n",
       "L 82.806785 233.705128 \n",
       "L 84.453774 227.934094 \n",
       "L 86.100764 237.64058 \n",
       "L 87.747753 220.212301 \n",
       "L 89.394742 237.225889 \n",
       "L 91.041732 252.486011 \n",
       "L 92.688721 225.133195 \n",
       "L 94.335711 204.354762 \n",
       "L 95.9827 251.349891 \n",
       "L 97.629689 230.572704 \n",
       "L 99.276679 247.118738 \n",
       "L 100.923668 215.244332 \n",
       "L 102.570657 255.987614 \n",
       "L 104.217647 233.673368 \n",
       "L 105.864636 256.724702 \n",
       "L 107.511626 216.90718 \n",
       "L 109.158615 204.081006 \n",
       "L 110.805604 235.215128 \n",
       "L 112.452594 252.541107 \n",
       "L 114.099583 217.498162 \n",
       "L 115.746572 251.046935 \n",
       "L 117.393562 268.958059 \n",
       "L 119.040551 222.993122 \n",
       "L 120.687541 224.857053 \n",
       "L 122.33453 229.288657 \n",
       "L 123.981519 234.467828 \n",
       "L 125.628509 253.103486 \n",
       "L 127.275498 260.294981 \n",
       "L 128.922487 232.285243 \n",
       "L 130.569477 212.7252 \n",
       "L 132.216466 214.565738 \n",
       "L 133.863456 232.773709 \n",
       "L 135.510445 264.262658 \n",
       "L 137.157434 237.280477 \n",
       "L 138.804424 241.560425 \n",
       "L 140.451413 222.209616 \n",
       "L 142.098402 237.489696 \n",
       "L 143.745392 242.152116 \n",
       "L 145.392381 235.432493 \n",
       "L 147.039371 252.810765 \n",
       "L 148.68636 240.456631 \n",
       "L 150.333349 237.110838 \n",
       "L 151.980339 241.018219 \n",
       "L 153.627328 225.314238 \n",
       "L 155.274317 241.78367 \n",
       "L 156.921307 254.467317 \n",
       "L 158.568296 229.860749 \n",
       "L 160.215286 245.208576 \n",
       "L 161.862275 249.383272 \n",
       "L 163.509264 215.620354 \n",
       "L 165.156254 254.386633 \n",
       "L 166.803243 229.236905 \n",
       "L 168.450232 264.953735 \n",
       "L 170.097222 236.205927 \n",
       "L 171.744211 250.49687 \n",
       "L 175.03819 243.964559 \n",
       "L 176.685179 239.725882 \n",
       "L 178.332169 249.607959 \n",
       "L 179.979158 257.066606 \n",
       "L 181.626147 233.086891 \n",
       "L 183.273137 249.438876 \n",
       "L 184.920126 260.065032 \n",
       "L 186.567116 231.711368 \n",
       "L 188.214105 259.659551 \n",
       "L 189.861094 262.385712 \n",
       "L 191.508084 258.472135 \n",
       "L 193.155073 251.453365 \n",
       "L 194.802062 240.3197 \n",
       "L 196.449052 236.448919 \n",
       "L 198.096041 239.009528 \n",
       "L 199.743031 255.77976 \n",
       "L 201.39002 230.664381 \n",
       "L 203.037009 235.765091 \n",
       "L 204.683999 261.225245 \n",
       "L 206.330988 260.557849 \n",
       "L 207.977977 257.696511 \n",
       "L 209.624967 224.134671 \n",
       "L 211.271956 234.96352 \n",
       "L 212.918946 261.384242 \n",
       "L 214.565935 233.490111 \n",
       "L 216.212924 252.053561 \n",
       "L 217.859914 232.483949 \n",
       "L 219.506903 253.524455 \n",
       "L 221.153892 263.927232 \n",
       "L 222.800882 262.918483 \n",
       "L 224.447871 269.229404 \n",
       "L 226.094861 229.123215 \n",
       "L 227.74185 246.500405 \n",
       "L 229.388839 260.902858 \n",
       "L 231.035829 255.460363 \n",
       "L 232.682818 238.167486 \n",
       "L 234.329807 271.197346 \n",
       "L 235.976797 250.838933 \n",
       "L 237.623786 242.1855 \n",
       "L 239.270776 251.609942 \n",
       "L 240.917765 247.291223 \n",
       "L 242.564754 258.581531 \n",
       "L 244.211744 232.419135 \n",
       "L 245.858733 240.597615 \n",
       "L 247.505722 226.620816 \n",
       "L 249.152712 268.728901 \n",
       "L 250.799701 264.468297 \n",
       "L 252.446691 259.719697 \n",
       "L 254.09368 267.828749 \n",
       "L 255.740669 257.574627 \n",
       "L 257.387659 245.442779 \n",
       "L 259.034648 249.965633 \n",
       "L 260.681637 261.640286 \n",
       "L 262.328627 254.343804 \n",
       "L 263.975616 241.345686 \n",
       "L 265.622606 244.0567 \n",
       "L 267.269595 249.892688 \n",
       "L 268.916584 243.238022 \n",
       "L 270.563574 233.765965 \n",
       "L 272.210563 271.8 \n",
       "L 272.210563 271.8 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"line2d_32\">\n",
       "    <path d=\"M 41.632051 19.8 \n",
       "L 53.226856 208.016179 \n",
       "L 64.821661 222.526734 \n",
       "L 76.416466 228.24878 \n",
       "L 88.011271 235.690843 \n",
       "L 99.606077 238.796277 \n",
       "L 111.200882 238.206638 \n",
       "L 122.795687 238.795728 \n",
       "L 134.390492 240.541836 \n",
       "L 145.985297 247.513407 \n",
       "L 157.580103 239.452718 \n",
       "L 169.174908 251.647831 \n",
       "L 180.769713 247.07451 \n",
       "L 192.364518 238.447406 \n",
       "L 203.959323 244.637198 \n",
       "L 215.554129 249.354108 \n",
       "L 227.148934 253.873909 \n",
       "L 238.743739 241.6049 \n",
       "L 250.338544 256.115007 \n",
       "L 261.933349 243.807375 \n",
       "\" clip-path=\"url(#p5376501943)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_3\">\n",
       "    <path d=\"M 30.103125 284.4 \n",
       "L 30.103125 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_4\">\n",
       "    <path d=\"M 283.739489 284.4 \n",
       "L 283.739489 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_5\">\n",
       "    <path d=\"M 30.103125 284.4 \n",
       "L 283.739489 284.4 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_6\">\n",
       "    <path d=\"M 30.103125 7.2 \n",
       "L 283.739489 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"legend_1\">\n",
       "    <g id=\"patch_7\">\n",
       "     <path d=\"M 197.148864 45.1125 \n",
       "L 276.739489 45.1125 \n",
       "Q 278.739489 45.1125 278.739489 43.1125 \n",
       "L 278.739489 14.2 \n",
       "Q 278.739489 12.2 276.739489 12.2 \n",
       "L 197.148864 12.2 \n",
       "Q 195.148864 12.2 195.148864 14.2 \n",
       "L 195.148864 43.1125 \n",
       "Q 195.148864 45.1125 197.148864 45.1125 \n",
       "z\n",
       "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n",
       "    </g>\n",
       "    <g id=\"line2d_33\">\n",
       "     <path d=\"M 199.148864 20.298437 \n",
       "L 209.148864 20.298437 \n",
       "L 219.148864 20.298437 \n",
       "\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_17\">\n",
       "     <!-- train_loss -->\n",
       "     <g transform=\"translate(227.148864 23.798437) scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \n",
       "Q 2534 3019 2420 3045 \n",
       "Q 2306 3072 2169 3072 \n",
       "Q 1681 3072 1420 2755 \n",
       "Q 1159 2438 1159 1844 \n",
       "L 1159 0 \n",
       "L 581 0 \n",
       "L 581 3500 \n",
       "L 1159 3500 \n",
       "L 1159 2956 \n",
       "Q 1341 3275 1631 3429 \n",
       "Q 1922 3584 2338 3584 \n",
       "Q 2397 3584 2469 3576 \n",
       "Q 2541 3569 2628 3553 \n",
       "L 2631 2963 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \n",
       "Q 1497 1759 1228 1600 \n",
       "Q 959 1441 959 1056 \n",
       "Q 959 750 1161 570 \n",
       "Q 1363 391 1709 391 \n",
       "Q 2188 391 2477 730 \n",
       "Q 2766 1069 2766 1631 \n",
       "L 2766 1759 \n",
       "L 2194 1759 \n",
       "z\n",
       "M 3341 1997 \n",
       "L 3341 0 \n",
       "L 2766 0 \n",
       "L 2766 531 \n",
       "Q 2569 213 2275 61 \n",
       "Q 1981 -91 1556 -91 \n",
       "Q 1019 -91 701 211 \n",
       "Q 384 513 384 1019 \n",
       "Q 384 1609 779 1909 \n",
       "Q 1175 2209 1959 2209 \n",
       "L 2766 2209 \n",
       "L 2766 2266 \n",
       "Q 2766 2663 2505 2880 \n",
       "Q 2244 3097 1772 3097 \n",
       "Q 1472 3097 1187 3025 \n",
       "Q 903 2953 641 2809 \n",
       "L 641 3341 \n",
       "Q 956 3463 1253 3523 \n",
       "Q 1550 3584 1831 3584 \n",
       "Q 2591 3584 2966 3190 \n",
       "Q 3341 2797 3341 1997 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-69\" d=\"M 603 3500 \n",
       "L 1178 3500 \n",
       "L 1178 0 \n",
       "L 603 0 \n",
       "L 603 3500 \n",
       "z\n",
       "M 603 4863 \n",
       "L 1178 4863 \n",
       "L 1178 4134 \n",
       "L 603 4134 \n",
       "L 603 4863 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-6e\" d=\"M 3513 2113 \n",
       "L 3513 0 \n",
       "L 2938 0 \n",
       "L 2938 2094 \n",
       "Q 2938 2591 2744 2837 \n",
       "Q 2550 3084 2163 3084 \n",
       "Q 1697 3084 1428 2787 \n",
       "Q 1159 2491 1159 1978 \n",
       "L 1159 0 \n",
       "L 581 0 \n",
       "L 581 3500 \n",
       "L 1159 3500 \n",
       "L 1159 2956 \n",
       "Q 1366 3272 1645 3428 \n",
       "Q 1925 3584 2291 3584 \n",
       "Q 2894 3584 3203 3211 \n",
       "Q 3513 2838 3513 2113 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-5f\" d=\"M 3263 -1063 \n",
       "L 3263 -1509 \n",
       "L -63 -1509 \n",
       "L -63 -1063 \n",
       "L 3263 -1063 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-6c\" d=\"M 603 4863 \n",
       "L 1178 4863 \n",
       "L 1178 0 \n",
       "L 603 0 \n",
       "L 603 4863 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-6f\" d=\"M 1959 3097 \n",
       "Q 1497 3097 1228 2736 \n",
       "Q 959 2375 959 1747 \n",
       "Q 959 1119 1226 758 \n",
       "Q 1494 397 1959 397 \n",
       "Q 2419 397 2687 759 \n",
       "Q 2956 1122 2956 1747 \n",
       "Q 2956 2369 2687 2733 \n",
       "Q 2419 3097 1959 3097 \n",
       "z\n",
       "M 1959 3584 \n",
       "Q 2709 3584 3137 3096 \n",
       "Q 3566 2609 3566 1747 \n",
       "Q 3566 888 3137 398 \n",
       "Q 2709 -91 1959 -91 \n",
       "Q 1206 -91 779 398 \n",
       "Q 353 888 353 1747 \n",
       "Q 353 2609 779 3096 \n",
       "Q 1206 3584 1959 3584 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-74\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-72\" x=\"39.208984\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"80.322266\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-69\" x=\"141.601562\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6e\" x=\"169.384766\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-5f\" x=\"232.763672\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6c\" x=\"282.763672\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6f\" x=\"310.546875\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-73\" x=\"371.728516\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-73\" x=\"423.828125\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"line2d_34\">\n",
       "     <path d=\"M 199.148864 35.254687 \n",
       "L 209.148864 35.254687 \n",
       "L 219.148864 35.254687 \n",
       "\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_18\">\n",
       "     <!-- val_loss -->\n",
       "     <g transform=\"translate(227.148864 38.754687) scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-76\" d=\"M 191 3500 \n",
       "L 800 3500 \n",
       "L 1894 563 \n",
       "L 2988 3500 \n",
       "L 3597 3500 \n",
       "L 2284 0 \n",
       "L 1503 0 \n",
       "L 191 3500 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-76\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"59.179688\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6c\" x=\"120.458984\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-5f\" x=\"148.242188\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6c\" x=\"198.242188\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6f\" x=\"226.025391\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-73\" x=\"287.207031\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-73\" x=\"339.306641\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_2\">\n",
       "   <g id=\"patch_8\">\n",
       "    <path d=\"M 334.466761 284.4 \n",
       "L 588.103125 284.4 \n",
       "L 588.103125 7.2 \n",
       "L 334.466761 7.2 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_3\">\n",
       "    <g id=\"xtick_9\">\n",
       "     <g id=\"line2d_35\">\n",
       "      <path d=\"M 345.995687 284.4 \n",
       "L 345.995687 7.2 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_36\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"345.995687\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_19\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(342.814437 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_10\">\n",
       "     <g id=\"line2d_37\">\n",
       "      <path d=\"M 378.935474 284.4 \n",
       "L 378.935474 7.2 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_38\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"378.935474\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_20\">\n",
       "      <!-- 2000 -->\n",
       "      <g transform=\"translate(366.210474 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_11\">\n",
       "     <g id=\"line2d_39\">\n",
       "      <path d=\"M 411.875262 284.4 \n",
       "L 411.875262 7.2 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_40\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"411.875262\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_21\">\n",
       "      <!-- 4000 -->\n",
       "      <g transform=\"translate(399.150262 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-34\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_12\">\n",
       "     <g id=\"line2d_41\">\n",
       "      <path d=\"M 444.815049 284.4 \n",
       "L 444.815049 7.2 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_42\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"444.815049\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_22\">\n",
       "      <!-- 6000 -->\n",
       "      <g transform=\"translate(432.090049 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-36\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_13\">\n",
       "     <g id=\"line2d_43\">\n",
       "      <path d=\"M 477.754837 284.4 \n",
       "L 477.754837 7.2 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_44\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"477.754837\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_23\">\n",
       "      <!-- 8000 -->\n",
       "      <g transform=\"translate(465.029837 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-38\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_14\">\n",
       "     <g id=\"line2d_45\">\n",
       "      <path d=\"M 510.694624 284.4 \n",
       "L 510.694624 7.2 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_46\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"510.694624\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_24\">\n",
       "      <!-- 10000 -->\n",
       "      <g transform=\"translate(494.788374 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_15\">\n",
       "     <g id=\"line2d_47\">\n",
       "      <path d=\"M 543.634412 284.4 \n",
       "L 543.634412 7.2 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_48\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"543.634412\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_25\">\n",
       "      <!-- 12000 -->\n",
       "      <g transform=\"translate(527.728162 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-32\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_16\">\n",
       "     <g id=\"line2d_49\">\n",
       "      <path d=\"M 576.574199 284.4 \n",
       "L 576.574199 7.2 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_50\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m5158e2a1ea\" x=\"576.574199\" y=\"284.4\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_26\">\n",
       "      <!-- 14000 -->\n",
       "      <g transform=\"translate(560.667949 298.998438) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-34\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"text_27\">\n",
       "     <!-- step -->\n",
       "     <g transform=\"translate(450.469318 312.676562) scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-73\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-74\" x=\"52.099609\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-65\" x=\"91.308594\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-70\" x=\"152.832031\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_4\">\n",
       "    <g id=\"ytick_8\">\n",
       "     <g id=\"line2d_51\">\n",
       "      <path d=\"M 334.466761 271.305813 \n",
       "L 588.103125 271.305813 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_52\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"334.466761\" y=\"271.305813\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_28\">\n",
       "      <!-- 0.1 -->\n",
       "      <g transform=\"translate(311.563636 275.105032) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-31\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_9\">\n",
       "     <g id=\"line2d_53\">\n",
       "      <path d=\"M 334.466761 236.006752 \n",
       "L 588.103125 236.006752 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_54\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"334.466761\" y=\"236.006752\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_29\">\n",
       "      <!-- 0.2 -->\n",
       "      <g transform=\"translate(311.563636 239.80597) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-32\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_10\">\n",
       "     <g id=\"line2d_55\">\n",
       "      <path d=\"M 334.466761 200.70769 \n",
       "L 588.103125 200.70769 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_56\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"334.466761\" y=\"200.70769\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_30\">\n",
       "      <!-- 0.3 -->\n",
       "      <g transform=\"translate(311.563636 204.506909) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-33\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_11\">\n",
       "     <g id=\"line2d_57\">\n",
       "      <path d=\"M 334.466761 165.408629 \n",
       "L 588.103125 165.408629 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_58\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"334.466761\" y=\"165.408629\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_31\">\n",
       "      <!-- 0.4 -->\n",
       "      <g transform=\"translate(311.563636 169.207847) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-34\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_12\">\n",
       "     <g id=\"line2d_59\">\n",
       "      <path d=\"M 334.466761 130.109567 \n",
       "L 588.103125 130.109567 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_60\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"334.466761\" y=\"130.109567\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_32\">\n",
       "      <!-- 0.5 -->\n",
       "      <g transform=\"translate(311.563636 133.908786) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_13\">\n",
       "     <g id=\"line2d_61\">\n",
       "      <path d=\"M 334.466761 94.810506 \n",
       "L 588.103125 94.810506 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_62\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"334.466761\" y=\"94.810506\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_33\">\n",
       "      <!-- 0.6 -->\n",
       "      <g transform=\"translate(311.563636 98.609724) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-36\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_14\">\n",
       "     <g id=\"line2d_63\">\n",
       "      <path d=\"M 334.466761 59.511444 \n",
       "L 588.103125 59.511444 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_64\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"334.466761\" y=\"59.511444\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_34\">\n",
       "      <!-- 0.7 -->\n",
       "      <g transform=\"translate(311.563636 63.310663) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-37\" d=\"M 525 4666 \n",
       "L 3525 4666 \n",
       "L 3525 4397 \n",
       "L 1831 0 \n",
       "L 1172 0 \n",
       "L 2766 4134 \n",
       "L 525 4134 \n",
       "L 525 4666 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-37\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_15\">\n",
       "     <g id=\"line2d_65\">\n",
       "      <path d=\"M 334.466761 24.212383 \n",
       "L 588.103125 24.212383 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_66\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mb921f1c10e\" x=\"334.466761\" y=\"24.212383\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_35\">\n",
       "      <!-- 0.8 -->\n",
       "      <g transform=\"translate(311.563636 28.011601) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-38\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"line2d_67\">\n",
       "    <path d=\"M 345.995687 267.996526 \n",
       "L 347.642676 190.779829 \n",
       "L 349.289666 185.264351 \n",
       "L 350.936655 152.171481 \n",
       "L 352.583644 157.686959 \n",
       "L 354.230634 146.656002 \n",
       "L 355.877623 152.171481 \n",
       "L 357.524613 113.563132 \n",
       "L 359.171602 135.625046 \n",
       "L 360.818591 113.563132 \n",
       "L 362.465581 63.923827 \n",
       "L 364.11257 141.140524 \n",
       "L 365.759559 80.470262 \n",
       "L 367.406549 119.07861 \n",
       "L 369.053538 146.656002 \n",
       "L 370.700528 85.98574 \n",
       "L 372.347517 130.109567 \n",
       "L 373.994506 113.563132 \n",
       "L 375.641496 52.89287 \n",
       "L 378.935474 97.016697 \n",
       "L 380.582464 113.563132 \n",
       "L 382.229453 58.408349 \n",
       "L 383.876443 91.501219 \n",
       "L 385.523432 130.109567 \n",
       "L 387.170421 91.501219 \n",
       "L 388.817411 102.532175 \n",
       "L 390.4644 80.470262 \n",
       "L 392.111389 119.07861 \n",
       "L 393.758379 91.501219 \n",
       "L 395.405368 47.377392 \n",
       "L 397.052358 108.047654 \n",
       "L 398.699347 130.109567 \n",
       "L 400.346336 58.408349 \n",
       "L 401.993326 113.563132 \n",
       "L 403.640315 74.954784 \n",
       "L 405.287304 119.07861 \n",
       "L 406.934294 69.439305 \n",
       "L 408.581283 91.501219 \n",
       "L 410.228273 52.89287 \n",
       "L 411.875262 124.594089 \n",
       "L 413.522251 135.625046 \n",
       "L 415.169241 74.954784 \n",
       "L 416.81623 58.408349 \n",
       "L 418.463219 124.594089 \n",
       "L 420.110209 58.408349 \n",
       "L 421.757198 30.830957 \n",
       "L 423.404188 102.532175 \n",
       "L 425.051177 108.047654 \n",
       "L 426.698166 74.954784 \n",
       "L 428.345156 124.594089 \n",
       "L 429.992145 69.439305 \n",
       "L 431.639134 41.861913 \n",
       "L 433.286124 80.470262 \n",
       "L 434.933113 113.563132 \n",
       "L 436.580103 113.563132 \n",
       "L 438.227092 91.501219 \n",
       "L 439.874081 19.8 \n",
       "L 441.521071 91.501219 \n",
       "L 443.16806 97.016697 \n",
       "L 444.815049 113.563132 \n",
       "L 446.462039 80.470262 \n",
       "L 449.756018 69.439305 \n",
       "L 451.403007 80.470262 \n",
       "L 453.049996 63.923827 \n",
       "L 454.696986 69.439305 \n",
       "L 456.343975 85.98574 \n",
       "L 457.990964 97.016697 \n",
       "L 459.637954 80.470262 \n",
       "L 461.284943 41.861913 \n",
       "L 462.931933 97.016697 \n",
       "L 464.578922 69.439305 \n",
       "L 466.225911 52.89287 \n",
       "L 467.872901 102.532175 \n",
       "L 469.51989 47.377392 \n",
       "L 471.166879 113.563132 \n",
       "L 472.813869 30.830957 \n",
       "L 474.460858 108.047654 \n",
       "L 476.107848 58.408349 \n",
       "L 477.754837 63.923827 \n",
       "L 479.401826 80.470262 \n",
       "L 481.048816 102.532175 \n",
       "L 482.695805 36.346435 \n",
       "L 484.342794 41.861913 \n",
       "L 485.989784 91.501219 \n",
       "L 487.636773 80.470262 \n",
       "L 489.283763 58.408349 \n",
       "L 490.930752 80.470262 \n",
       "L 492.577741 58.408349 \n",
       "L 494.224731 41.861913 \n",
       "L 495.87172 41.861913 \n",
       "L 497.518709 63.923827 \n",
       "L 499.165699 102.532175 \n",
       "L 500.812688 97.016697 \n",
       "L 502.459678 69.439305 \n",
       "L 504.106667 69.439305 \n",
       "L 505.753656 52.89287 \n",
       "L 507.400646 74.954784 \n",
       "L 509.047635 52.89287 \n",
       "L 510.694624 36.346435 \n",
       "L 512.341614 58.408349 \n",
       "L 513.988603 97.016697 \n",
       "L 515.635593 69.439305 \n",
       "L 517.282582 47.377392 \n",
       "L 518.929571 47.377392 \n",
       "L 520.576561 58.408349 \n",
       "L 522.22355 52.89287 \n",
       "L 523.870539 58.408349 \n",
       "L 525.517529 36.346435 \n",
       "L 528.811508 47.377392 \n",
       "L 530.458497 91.501219 \n",
       "L 532.105486 47.377392 \n",
       "L 533.752476 47.377392 \n",
       "L 535.399465 69.439305 \n",
       "L 537.046454 102.532175 \n",
       "L 538.693444 41.861913 \n",
       "L 540.340433 63.923827 \n",
       "L 541.987423 74.954784 \n",
       "L 543.634412 58.408349 \n",
       "L 545.281401 52.89287 \n",
       "L 546.928391 58.408349 \n",
       "L 548.57538 85.98574 \n",
       "L 550.222369 74.954784 \n",
       "L 551.869359 97.016697 \n",
       "L 555.163338 63.923827 \n",
       "L 556.810327 52.89287 \n",
       "L 558.457316 36.346435 \n",
       "L 560.104306 52.89287 \n",
       "L 561.751295 63.923827 \n",
       "L 563.398284 58.408349 \n",
       "L 565.045274 41.861913 \n",
       "L 566.692263 41.861913 \n",
       "L 568.339253 69.439305 \n",
       "L 569.986242 69.439305 \n",
       "L 571.633231 58.408349 \n",
       "L 573.280221 102.532175 \n",
       "L 574.92721 80.470262 \n",
       "L 576.574199 30.830957 \n",
       "L 576.574199 30.830957 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"line2d_68\">\n",
       "    <path d=\"M 345.995687 271.8 \n",
       "L 357.590492 131.309735 \n",
       "L 369.185297 112.036448 \n",
       "L 380.780103 97.916823 \n",
       "L 392.374908 84.714974 \n",
       "L 403.969713 78.85533 \n",
       "L 415.564518 80.126096 \n",
       "L 427.159323 76.878582 \n",
       "L 438.754129 74.972433 \n",
       "L 450.348934 66.994845 \n",
       "L 461.943739 73.489873 \n",
       "L 473.538544 58.664267 \n",
       "L 485.133349 70.807144 \n",
       "L 496.728155 78.643536 \n",
       "L 508.32296 66.147668 \n",
       "L 519.917765 61.205799 \n",
       "L 531.51257 53.863594 \n",
       "L 543.107375 72.572097 \n",
       "L 554.70218 51.533856 \n",
       "L 566.296986 65.441687 \n",
       "\" clip-path=\"url(#p5566f6ff7d)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_9\">\n",
       "    <path d=\"M 334.466761 284.4 \n",
       "L 334.466761 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_10\">\n",
       "    <path d=\"M 588.103125 284.4 \n",
       "L 588.103125 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_11\">\n",
       "    <path d=\"M 334.466761 284.4 \n",
       "L 588.103125 284.4 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_12\">\n",
       "    <path d=\"M 334.466761 7.2 \n",
       "L 588.103125 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"legend_2\">\n",
       "    <g id=\"patch_13\">\n",
       "     <path d=\"M 341.466761 45.1125 \n",
       "L 418.866761 45.1125 \n",
       "Q 420.866761 45.1125 420.866761 43.1125 \n",
       "L 420.866761 14.2 \n",
       "Q 420.866761 12.2 418.866761 12.2 \n",
       "L 341.466761 12.2 \n",
       "Q 339.466761 12.2 339.466761 14.2 \n",
       "L 339.466761 43.1125 \n",
       "Q 339.466761 45.1125 341.466761 45.1125 \n",
       "z\n",
       "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n",
       "    </g>\n",
       "    <g id=\"line2d_69\">\n",
       "     <path d=\"M 343.466761 20.298437 \n",
       "L 353.466761 20.298437 \n",
       "L 363.466761 20.298437 \n",
       "\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_36\">\n",
       "     <!-- train_acc -->\n",
       "     <g transform=\"translate(371.466761 23.798437) scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-63\" d=\"M 3122 3366 \n",
       "L 3122 2828 \n",
       "Q 2878 2963 2633 3030 \n",
       "Q 2388 3097 2138 3097 \n",
       "Q 1578 3097 1268 2742 \n",
       "Q 959 2388 959 1747 \n",
       "Q 959 1106 1268 751 \n",
       "Q 1578 397 2138 397 \n",
       "Q 2388 397 2633 464 \n",
       "Q 2878 531 3122 666 \n",
       "L 3122 134 \n",
       "Q 2881 22 2623 -34 \n",
       "Q 2366 -91 2075 -91 \n",
       "Q 1284 -91 818 406 \n",
       "Q 353 903 353 1747 \n",
       "Q 353 2603 823 3093 \n",
       "Q 1294 3584 2113 3584 \n",
       "Q 2378 3584 2631 3529 \n",
       "Q 2884 3475 3122 3366 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-74\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-72\" x=\"39.208984\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"80.322266\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-69\" x=\"141.601562\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6e\" x=\"169.384766\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-5f\" x=\"232.763672\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"282.763672\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-63\" x=\"344.042969\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-63\" x=\"399.023438\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"line2d_70\">\n",
       "     <path d=\"M 343.466761 35.254687 \n",
       "L 353.466761 35.254687 \n",
       "L 363.466761 35.254687 \n",
       "\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_37\">\n",
       "     <!-- val_acc -->\n",
       "     <g transform=\"translate(371.466761 38.754687) scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-76\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"59.179688\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6c\" x=\"120.458984\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-5f\" x=\"148.242188\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"198.242188\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-63\" x=\"259.521484\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-63\" x=\"314.501953\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "  </g>\n",
       " </g>\n",
       " <defs>\n",
       "  <clipPath id=\"p5376501943\">\n",
       "   <rect x=\"30.103125\" y=\"7.2\" width=\"253.636364\" height=\"277.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p5566f6ff7d\">\n",
       "   <rect x=\"334.466761\" y=\"7.2\" width=\"253.636364\" height=\"277.2\"/>\n",
       "  </clipPath>\n",
       " </defs>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#画线要注意的是损失是不一定在零到1之间的\n",
    "def plot_learning_curves(record_dict, sample_step=500):\n",
    "    # build DataFrame\n",
    "    train_df = pd.DataFrame(record_dict[\"train\"]).set_index(\"step\").iloc[::sample_step]\n",
    "    val_df = pd.DataFrame(record_dict[\"val\"]).set_index(\"step\")\n",
    "\n",
    "    # plot\n",
    "    fig_num = len(train_df.columns)\n",
    "    fig, axs = plt.subplots(1, fig_num, figsize=(5 * fig_num, 5))\n",
    "    for idx, item in enumerate(train_df.columns):    \n",
    "        axs[idx].plot(train_df.index, train_df[item], label=f\"train_{item}\")\n",
    "        axs[idx].plot(val_df.index, val_df[item], label=f\"val_{item}\")\n",
    "        axs[idx].grid()\n",
    "        axs[idx].legend()\n",
    "        # axs[idx].set_xticks(range(0, train_df.index[-1], 5000))\n",
    "        # axs[idx].set_xticklabels(map(lambda x: f\"{int(x/1000)}k\", range(0, train_df.index[-1], 5000)))\n",
    "        axs[idx].set_xlabel(\"step\")\n",
    "    \n",
    "    plt.show()\n",
    "\n",
    "plot_learning_curves(record, sample_step=100)  #横坐标是 steps"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.8127\n",
      "accuracy: 0.7226\n"
     ]
    }
   ],
   "source": [
    "# dataload for evaluating\n",
    "\n",
    "# load checkpoints\n",
    "model.load_state_dict(torch.load(f\"checkpoints/{exp_name}/best.ckpt\", map_location=\"cpu\"))\n",
    "\n",
    "model.eval()\n",
    "loss, acc = evaluating(model, eval_dl, loss_fct)\n",
    "print(f\"loss:     {loss:.4f}\\naccuracy: {acc:.4f}\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 推理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ddb7813da66e4c3298cc5d73d248d211",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/4688 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>filepath</th>\n",
       "      <th>class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>cifar-10/test/1.png</td>\n",
       "      <td>cat</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>cifar-10/test/2.png</td>\n",
       "      <td>airplane</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>cifar-10/test/3.png</td>\n",
       "      <td>automobile</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>cifar-10/test/4.png</td>\n",
       "      <td>ship</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>cifar-10/test/5.png</td>\n",
       "      <td>bird</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              filepath       class\n",
       "0  cifar-10/test/1.png         cat\n",
       "1  cifar-10/test/2.png    airplane\n",
       "2  cifar-10/test/3.png  automobile\n",
       "3  cifar-10/test/4.png        ship\n",
       "4  cifar-10/test/5.png        bird"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# test_df\n",
    "test_ds = Cifar10Dataset(\"test\", transform=transforms_eval)\n",
    "test_dl = DataLoader(test_ds, batch_size=batch_size, shuffle=False, drop_last=False)\n",
    "\n",
    "preds_collect = []\n",
    "model.eval()\n",
    "for data, fake_label in tqdm(test_dl):\n",
    "    data = data.to(device=device)\n",
    "    logits = model(data)\n",
    "    preds = [test_ds.idx_to_label[idx] for idx in logits.argmax(axis=-1).cpu().tolist()]\n",
    "    preds_collect.extend(preds)\n",
    "    \n",
    "test_df[\"class\"] = preds_collect\n",
    "test_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导出 submission.csv\n",
    "test_df.to_csv(\"submission.csv\", index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.8"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
